package PROYECTO2.src;
import java.util.ArrayList;
import java.util.Random;

import PROYECTO2.src.Explosiones_Disparos.Shot;
import PROYECTO2.src.Explosiones_Disparos.Explosion;
import PROYECTO2.src.Frames_Minds.Mind;
import PROYECTO2.src.Frames_Minds.MindCylons;
import PROYECTO2.src.Naves.Enemigos.Raider;
import PROYECTO2.src.Naves.Enemigos.Marauder;
import PROYECTO2.src.Naves.Enemigos.HeavyRaider;
import PROYECTO2.src.Naves.Enemigos.Cylon;
import PROYECTO2.src.Naves.Jugador.Colonial;

public class Game 
  {protected ArrayList laseresCylon;//Arreglo de disparos cylons.
   protected ArrayList laseresColoniales;//Arreglo de disparos coloniales
   protected ArrayList explosiones;
   protected Colonial colonial;
   protected ArrayList cylonsInWindow;
   protected int indiceCylons;
   protected int indiceExplosiones;
   protected Mind mind;
   protected MindCylons mindCylons;
   protected int cantCylons;
   protected Random rn;
	
	
	public Game() {
		
		// Arreglo de disparos
		laseresCylon = new ArrayList();
		laseresColoniales = new ArrayList();

		rn = new Random(5);
		cantCylons = 100;
     		
		cylonsInWindow = new ArrayList();
		indiceCylons = 0;
		
		explosiones = new ArrayList();
	}
	
	public int cantCylons(){
		return cantCylons - indiceCylons;
	}
	
	public ArrayList getCylons() {
		return cylonsInWindow;
	}
	
	public void setCylons(ArrayList cylons) {
		this.cylonsInWindow = cylons;
	}

	public Colonial getColonial() {
		return colonial;
	}

	public void setColonial(Colonial colonial) {
		this.colonial = colonial;
	}
	
	public void setMind(Mind mind) {
		this.mind = mind;
	}

	public void setMindCylons(MindCylons mindCylons) {
		this.mindCylons = mindCylons;
	}
	
	public int sizLaseresCylon() {
		return laseresCylon.size();
	}
	
	public int sizelaseresColoniales() {
		return laseresColoniales.size();
	}
	
	public void addShotCylon(Shot d) {
		laseresCylon.add(d);
	}
	
	public void addShotColonial(Shot d) {
		laseresColoniales.add(d);
	}
	
	public void removeShotColonial(int i) {
		laseresColoniales.remove(i);
	}

	public ArrayList getLaseresCylons() {
		return laseresCylon;
	}

	public ArrayList getLaseresColoniales() {
		return laseresColoniales;
	}
	/*
	 * Crea un nuevo enemigo aleatoriamente
	 */
	public Cylon nextCylon() {
		Cylon m=null;
		if(indiceCylons < cantCylons) {	
			int probabilidad = rn.nextInt(cantCylons);
			
			if(probabilidad % 5 == 0)
				m = new HeavyRaider(probabilidad % 15 == 0);
			else if(probabilidad % 11 == 0)
				m = new Marauder(probabilidad % 22 == 0);
			else m = new Raider((probabilidad % 30) == 1);
						
			m.setColonial(colonial);
            m.setGame(this);
			
		} else {
			return null;
		}
		indiceCylons++;
		return m;
	}
	
	/*
	 * Agrega el explosion ex a la lista de explosivos 
	 */
	public void addExposion(Explosion ex) {
		explosiones.add(ex);
	}
	
	public ArrayList explosions() {
		return explosiones;
	}

	
	public void stop() {
		mind.stop();
		mindCylons.setStop();
		
	}
}

